#ifndef PLY_INIT_H
#define PLY_INIT_H

typedef struct _PlyBarycenterCoords {

	float xm, ym, zm; // Coordenadas do baricentro

} PlyBarycenterCoords;


typedef struct _PlyModel {

	char* file_name; // Nome do arquivo que contem o model
	char* scene_name; // Nome do modelo na cena (configurado atraves da funcao 'PlyModel * initPly(char* scene_name, char* file_name)' )

	unsigned int id; // Armazena um identificador unico para o objeto

	Vertex** vlist; // Vetor de vertices
	Face** flist; // Vetor de faces

	int num_faces; // Numero total de faces
	int num_vertices; // Numero total de vertices

	PlyBarycenterCoords* bc_coords;

} PlyModel;

// Retorna um ponteiro para uma estrutura que contem as coordenadas x, y e z do baricentro do objeto
extern PlyBarycenterCoords *
getPlyBarycenterCoords(int num_vertices, Vertex** vlist);

// Configura um identificador interno unico para cada modelo carregado
extern void
setPlyModelID(PlyModel* ply_model);

// Retorna um ponteiro para uma estrutura que simboliza um modelo PLY
extern PlyModel *
initPly(char* scene_name, char* file_name);

// Mostra informacoes sobre modelo passado
extern void
showPlyInfo(PlyModel* ply_model);

#endif
